# 多个装饰器修饰同一个函数

# 第一个装饰器:
def outer(fn):
    def inner():
        print("~~~~~~~~111111")
        fn()
    return inner

# 第二个装饰器
def outer1(fn):
    def inner1():
        print("+++++++222222")
        fn()
    return inner1

# 原函数
@outer1
@outer
def demo():
    print("大家可以提前准备购买返程车票了.....")

demo()

'''
注意:
1.当多个装饰器修饰同一个函数时,按照原函数和新增功能的前后顺序从上往下执行,并且原函数只会执行一次.

'''
'''
应用场景:
注册功能: 收集手机号码或者邮箱等作为账户,保存到数据库     原函数

针对于手机号定义一个装饰器: 验证手机号码的合法性

针对于邮箱定义一个装饰器: 验证邮箱的合法性
'''